NexusPi Git Node
tests/proof_probe.py main (ee519cc2) Text, 7.06 KB
T8b949e#!/usr/bin/env python3
T8b949e"""Noninteractive RNS proof probe for RTNode TCP <-> RNode LoRa tests."""
Tff7b72import T7ee787argparse
Tff7b72import T7ee787os
Tff7b72import T7ee787sys
Tff7b72import T7ee787time
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path
Tff7b72import T7ee787RNS
Te6edf3APP_NAME Tff7b72= Ta5d6ff"Ta5d6ffrtnode_probeTa5d6ff"
Te6edf3ASPECT Tff7b72= Ta5d6ff"Ta5d6ffproofTa5d6ff"
Tff7b72def Td2a8ffwrite_configTb4b4b4(Te6edf3config_dirTb4b4b4, Te6edf3sideTb4b4b4, Te6edf3argsTb4b4b4)Tb4b4b4:
Te6edf3config_dirTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3parentsTff7b72=Tff7b72TrueTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3lines Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ff[reticulum]Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff enable_transport = noTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff share_instance = noTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff instance_name = proof_probe_Tffd700{Te6edf3sideTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff[interfaces]Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff"Tb4b4b4,
Tb4b4b4]
Tff7b72if Te6edf3side Tff7b72== Ta5d6ff"Ta5d6fftcpTa5d6ff"Tb4b4b4:
Te6edf3lines Tff7b72+Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ff [[RTNode TCP]]Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff type = TCPClientInterfaceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff enabled = yesTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff target_host = Tffd700{Te6edf3argsTff7b72.Td2a8fftcp_hostTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff target_port = Tffd700{Te6edf3argsTff7b72.Td2a8fftcp_portTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff"Tb4b4b4,
Tb4b4b4]
Tff7b72elif Te6edf3side Tff7b72== Ta5d6ff"Ta5d6ffloraTa5d6ff"Tb4b4b4:
Te6edf3lines Tff7b72+Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ff [[RNode LoRa]]Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff type = RNodeInterfaceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff enabled = yesTa5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff port = Tffd700{Te6edf3argsTff7b72.Td2a8ffrnode_portTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff frequency = Tffd700{Te6edf3argsTff7b72.Td2a8fffrequencyTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff bandwidth = Tffd700{Te6edf3argsTff7b72.Td2a8ffbandwidthTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff txpower = Tffd700{Te6edf3argsTff7b72.Td2a8fftxpowerTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff spreadingfactor = Tffd700{Te6edf3argsTff7b72.Td2a8ffspreadingfactorTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6fffTa5d6ff"Ta5d6ff codingrate = Tffd700{Te6edf3argsTff7b72.Td2a8ffcodingrateTffd700}Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ff"Tb4b4b4,
Tb4b4b4]
Tff7b72elseTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffUnsupported side: Tffd700{Te6edf3sideTffd700}Ta5d6ff"Tb4b4b4)
Tb4b4b4(Te6edf3config_dir Tff7b72/ Ta5d6ff"Ta5d6ffconfigTa5d6ff"Tb4b4b4)Tff7b72.Td2a8ffwrite_textTb4b4b4(Ta5d6ff"Tffea00\nTa5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3linesTb4b4b4)Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffload_or_create_identityTb4b4b4(Te6edf3identity_pathTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3identity_pathTff7b72.Td2a8ffexistsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3identity Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8fffrom_fileTb4b4b4(Tffa657strTb4b4b4(Te6edf3identity_pathTb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffLoaded identity from Tffd700{Te6edf3identity_pathTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Tff7b72return Te6edf3identity
Te6edf3identity Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTb4b4b4(Tb4b4b4)
Te6edf3identityTff7b72.Td2a8ffto_fileTb4b4b4(Tffa657strTb4b4b4(Te6edf3identity_pathTb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCreated identity at Tffd700{Te6edf3identity_pathTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Tff7b72return Te6edf3identity
Tff7b72def Td2a8ffrun_serverTb4b4b4(Te6edf3argsTb4b4b4)Tb4b4b4:
Te6edf3config_dir Tff7b72= Te6edf3argsTff7b72.Td2a8ffwork_dir Tff7b72/ Ta5d6fffTa5d6ff"Ta5d6ffconfig_Tffd700{Te6edf3argsTff7b72.Td2a8ffsideTffd700}Ta5d6ff_serverTa5d6ff"
Te6edf3write_configTb4b4b4(Te6edf3config_dirTb4b4b4, Te6edf3argsTff7b72.Td2a8ffsideTb4b4b4, Te6edf3argsTb4b4b4)
Te6edf3RNSTff7b72.Td2a8ffloglevel Tff7b72= Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUG Tff7b72if Te6edf3argsTff7b72.Td2a8ffdebug Tff7b72else Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICE
Te6edf3RNSTff7b72.Td2a8ffReticulumTb4b4b4(Te6edf3configdirTff7b72=Tffa657strTb4b4b4(Te6edf3config_dirTb4b4b4)Tb4b4b4)
Te6edf3identity Tff7b72= Te6edf3load_or_create_identityTb4b4b4(Te6edf3argsTff7b72.Td2a8ffwork_dir Tff7b72/ Ta5d6fffTa5d6ff"Tffd700{Te6edf3argsTff7b72.Td2a8ffsideTffd700}Ta5d6ff_server.identityTa5d6ff"Tb4b4b4)
Te6edf3destination Tff7b72= Te6edf3RNSTff7b72.Td2a8ffDestinationTb4b4b4(Te6edf3identityTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffINTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffSINGLETb4b4b4, Te6edf3APP_NAMETb4b4b4, Te6edf3ASPECTTb4b4b4)
Te6edf3destinationTff7b72.Td2a8ffset_proof_strategyTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffPROVE_ALLTb4b4b4)
Tff7b72def Td2a8ffon_packetTb4b4b4(Te6edf3dataTb4b4b4, Te6edf3packetTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(
Ta5d6ff"Ta5d6ffSERVER_RX Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffside=Tffd700{Te6edf3argsTff7b72.Td2a8ffsideTffd700}Ta5d6ff len=Tffd700{Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4)Tffd700}Ta5d6ff hash=Tffd700{Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3packetTff7b72.Td2a8ffpacket_hashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tffd700}Ta5d6ff Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6fffrom=Tffd700{Te6edf3packetTff7b72.Td2a8ffreceiving_interfaceTffd700}Ta5d6ff"Tb4b4b4,
Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4,
Tb4b4b4)
Te6edf3destinationTff7b72.Td2a8ffset_packet_callbackTb4b4b4(Te6edf3on_packetTb4b4b4)
Te6edf3argsTff7b72.Td2a8ffhash_fileTff7b72.Td2a8ffparentTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3parentsTff7b72=Tff7b72TrueTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3argsTff7b72.Td2a8ffhash_fileTff7b72.Td2a8ffwrite_textTb4b4b4(Te6edf3destinationTff7b72.Td2a8ffhashTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffSERVER_READY side=Tffd700{Te6edf3argsTff7b72.Td2a8ffsideTffd700}Ta5d6ff hash=Tffd700{Te6edf3destinationTff7b72.Td2a8ffhashTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Te6edf3destinationTff7b72.Td2a8ffannounceTb4b4b4(Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffSERVER_ANNOUNCE initialTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Te6edf3start Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3last_announce Tff7b72= Te6edf3start
Tff7b72while Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3start Tff7b72< Te6edf3argsTff7b72.Td2a8ffdurationTb4b4b4:
Te6edf3now Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3argsTff7b72.Td2a8ffannounce_interval Tff7b72> T79c0ff0 Tff7b72and Te6edf3now Tff7b72- Te6edf3last_announce Tff7b72>Tff7b72= Te6edf3argsTff7b72.Td2a8ffannounce_intervalTb4b4b4:
Te6edf3destinationTff7b72.Td2a8ffannounceTb4b4b4(Tb4b4b4)
Te6edf3last_announce Tff7b72= Te6edf3now
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffSERVER_ANNOUNCE periodicTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.25Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffSERVER_DONETa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Tff7b72def Td2a8ffrun_clientTb4b4b4(Te6edf3argsTb4b4b4)Tb4b4b4:
Te6edf3config_dir Tff7b72= Te6edf3argsTff7b72.Td2a8ffwork_dir Tff7b72/ Ta5d6fffTa5d6ff"Ta5d6ffconfig_Tffd700{Te6edf3argsTff7b72.Td2a8ffsideTffd700}Ta5d6ff_clientTa5d6ff"
Te6edf3write_configTb4b4b4(Te6edf3config_dirTb4b4b4, Te6edf3argsTff7b72.Td2a8ffsideTb4b4b4, Te6edf3argsTb4b4b4)
Te6edf3RNSTff7b72.Td2a8ffloglevel Tff7b72= Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUG Tff7b72if Te6edf3argsTff7b72.Td2a8ffdebug Tff7b72else Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICE
Te6edf3RNSTff7b72.Td2a8ffReticulumTb4b4b4(Te6edf3configdirTff7b72=Tffa657strTb4b4b4(Te6edf3config_dirTb4b4b4)Tb4b4b4)
Tff7b72if Te6edf3argsTff7b72.Td2a8fftargetTb4b4b4:
Te6edf3target_hash Tff7b72= Tffa657bytesTff7b72.Td2a8fffromhexTb4b4b4(Te6edf3argsTff7b72.Td2a8fftargetTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3target_hash Tff7b72= Tffa657bytesTff7b72.Td2a8fffromhexTb4b4b4(Te6edf3argsTff7b72.Td2a8ffhash_fileTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCLIENT_TARGET side=Tffd700{Te6edf3argsTff7b72.Td2a8ffsideTffd700}Ta5d6ff hash=Tffd700{Te6edf3target_hashTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Te6edf3start Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffrequest_pathTb4b4b4(Te6edf3target_hashTb4b4b4)
Tff7b72while Tff7b72not Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffhas_pathTb4b4b4(Te6edf3target_hashTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3start Tff7b72> Te6edf3argsTff7b72.Td2a8ffpath_timeoutTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCLIENT_FAIL no path after Tffd700{Te6edf3argsTff7b72.Td2a8ffpath_timeoutTffd700}Ta5d6ffsTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72return T79c0ff2
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.25Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCLIENT_PATH_READY elapsed=Tffd700{Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTffd700:Ta5d6ff.1fTffd700}Ta5d6ffsTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Te6edf3identity Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8ffrecallTb4b4b4(Te6edf3target_hashTb4b4b4)
Tff7b72if Te6edf3identity Tff7b72is Tff7b72NoneTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffCLIENT_FAIL identity recall returned noneTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72return T79c0ff3
Te6edf3destination Tff7b72= Te6edf3RNSTff7b72.Td2a8ffDestinationTb4b4b4(Te6edf3identityTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffOUTTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffDestinationTff7b72.Td2a8ffSINGLETb4b4b4, Te6edf3APP_NAMETb4b4b4, Te6edf3ASPECTTb4b4b4)
Te6edf3payload Tff7b72= Te6edf3argsTff7b72.Td2a8ffpayloadTff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Te6edf3packet Tff7b72= Te6edf3RNSTff7b72.Td2a8ffPacketTb4b4b4(Te6edf3destinationTb4b4b4, Te6edf3payloadTb4b4b4)
Te6edf3receipt Tff7b72= Te6edf3packetTff7b72.Td2a8ffsendTb4b4b4(Tb4b4b4)
Te6edf3receiptTff7b72.Td2a8ffset_timeoutTb4b4b4(Te6edf3argsTff7b72.Td2a8fftimeoutTb4b4b4)
Tff7b72def Td2a8ffdeliveredTb4b4b4(Te6edf3receiptTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCLIENT_DELIVERED rtt=Tffd700{Te6edf3receiptTff7b72.Td2a8ffget_rttTb4b4b4(Tb4b4b4)Tffd700:Ta5d6ff.3fTffd700}Ta5d6ffsTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Tff7b72def Td2a8fftimed_outTb4b4b4(Te6edf3receiptTb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffCLIENT_TIMEOUT proof not receivedTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_WARNINGTb4b4b4)
Te6edf3receiptTff7b72.Td2a8ffset_delivery_callbackTb4b4b4(Te6edf3deliveredTb4b4b4)
Te6edf3receiptTff7b72.Td2a8ffset_timeout_callbackTb4b4b4(Te6edf3timed_outTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCLIENT_SENT packet_hash=Tffd700{Te6edf3RNSTff7b72.Td2a8ffhexrepTb4b4b4(Te6edf3receiptTff7b72.Td2a8ffhashTb4b4b4, Te6edf3delimitTff7b72=Tff7b72FalseTb4b4b4)Tffd700}Ta5d6ff len=Tffd700{Tffa657lenTb4b4b4(Te6edf3payloadTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_NOTICETb4b4b4)
Te6edf3wait_start Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72while Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3wait_start Tff7b72< Te6edf3argsTff7b72.Td2a8fftimeout Tff7b72+ T79c0ff2Tb4b4b4:
Tff7b72if Te6edf3receiptTff7b72.Td2a8ffstatus Tff7b72== Te6edf3RNSTff7b72.Td2a8ffPacketReceiptTff7b72.Td2a8ffDELIVEREDTb4b4b4:
Tff7b72return T79c0ff0
Tff7b72if Te6edf3receiptTff7b72.Td2a8ffstatus Tff7b72== Te6edf3RNSTff7b72.Td2a8ffPacketReceiptTff7b72.Td2a8ffFAILEDTb4b4b4:
Tff7b72return T79c0ff4
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(T79c0ff0.25Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffCLIENT_FAIL final_status=Tffd700{Te6edf3receiptTff7b72.Td2a8ffstatusTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72return T79c0ff5
Tff7b72def Td2a8ffmainTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3parser Tff7b72= Te6edf3argparseTff7b72.Td2a8ffArgumentParserTb4b4b4(Te6edf3descriptionTff7b72=Tff7b72__doc__Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ffmodeTa5d6ff"Tb4b4b4, Te6edf3choicesTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffserverTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffclientTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--sideTa5d6ff"Tb4b4b4, Te6edf3choicesTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6fftcpTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffloraTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3requiredTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--work-dirTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Te6edf3PathTb4b4b4, Te6edf3defaultTff7b72=Te6edf3PathTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72.Td2a8ffwith_nameTb4b4b4(Ta5d6ff"Ta5d6ffproof_probe_stateTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--hash-fileTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Te6edf3PathTb4b4b4, Te6edf3defaultTff7b72=Te6edf3PathTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72.Td2a8ffwith_nameTb4b4b4(Ta5d6ff"Ta5d6ffproof_probe_stateTa5d6ff"Tb4b4b4) Tff7b72/ Ta5d6ff"Ta5d6ffserver_hash.txtTa5d6ff"Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--durationTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657floatTb4b4b4, Te6edf3defaultTff7b72=T79c0ff90Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--announce-intervalTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657floatTb4b4b4, Te6edf3defaultTff7b72=T79c0ff20Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--targetTa5d6ff"Tb4b4b4, Te6edf3defaultTff7b72=Tff7b72NoneTb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--path-timeoutTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657floatTb4b4b4, Te6edf3defaultTff7b72=T79c0ff45Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--timeoutTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657floatTb4b4b4, Te6edf3defaultTff7b72=T79c0ff45Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--payloadTa5d6ff"Tb4b4b4, Te6edf3defaultTff7b72=Ta5d6ff"Ta5d6ffproof probeTa5d6ff"Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--tcp-hostTa5d6ff"Tb4b4b4, Te6edf3defaultTff7b72=Ta5d6ff"Ta5d6ffmynode.localTa5d6ff"Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--tcp-portTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657intTb4b4b4, Te6edf3defaultTff7b72=T79c0ff4242Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--rnode-portTa5d6ff"Tb4b4b4, Te6edf3defaultTff7b72=Ta5d6ff"Ta5d6ff/dev/cu.usbmodem11201Ta5d6ff"Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--frequencyTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657intTb4b4b4, Te6edf3defaultTff7b72=T79c0ff914875000Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--bandwidthTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657intTb4b4b4, Te6edf3defaultTff7b72=T79c0ff125000Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--spreadingfactorTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657intTb4b4b4, Te6edf3defaultTff7b72=T79c0ff10Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--codingrateTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657intTb4b4b4, Te6edf3defaultTff7b72=T79c0ff5Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--txpowerTa5d6ff"Tb4b4b4, Tffa657typeTff7b72=Tffa657intTb4b4b4, Te6edf3defaultTff7b72=T79c0ff22Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(Ta5d6ff"Ta5d6ff--debugTa5d6ff"Tb4b4b4, Te6edf3actionTff7b72=Ta5d6ff"Ta5d6ffstore_trueTa5d6ff"Tb4b4b4)
Te6edf3args Tff7b72= Te6edf3parserTff7b72.Td2a8ffparse_argsTb4b4b4(Tb4b4b4)
Te6edf3argsTff7b72.Td2a8ffwork_dirTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3parentsTff7b72=Tff7b72TrueTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72if Te6edf3argsTff7b72.Td2a8ffmode Tff7b72== Ta5d6ff"Ta5d6ffserverTa5d6ff"Tb4b4b4:
Te6edf3run_serverTb4b4b4(Te6edf3argsTb4b4b4)
Tff7b72return T79c0ff0
Tff7b72return Te6edf3run_clientTb4b4b4(Te6edf3argsTb4b4b4)
Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Te6edf3sysTff7b72.Td2a8ffexitTb4b4b4(Te6edf3mainTb4b4b4(Tb4b4b4)Tb4b4b4)
Served by rngit 1.4.2 - Generated in 0.05s